草庐IT

java - 枚举中的方法

全部标签

javascript - 我可以使用一组限制来模拟 JavaScript 中的函数式编程吗?

我在看MiskoHevery关于干净代码的演讲,他提到尝试编写一个没有if语句的程序(嗯,尽可能少)以模拟在...Smalltalk或其他一些这种语言,其中多态性优于内联条件行为。据我有限的理解,函数式编程对于像我这样的目前为止只有命令式的程序员来说很难——因为我们的状态改变方法无法在函数式程序中表达。函数只接受一个值并返回一个值,对状态一无所知。我还看到JS被誉为能够支持函数式模型。那么是否有一组简单的限制,类似于我的第一段,这将使我能够用我知道和喜爱的语言尝试功能范式-而不是学习一门全新的语言(我最终会这样做但我现在想尝试这种精神)? 最佳答案

javascript - 在 JavaScript 中比较字符串的最快方法是什么?

我有两个字符串,我需要知道它们是否相等。我以前这样做过:str1===str2,但我想知道是否有更快的方法来比较两个字符串。字符串相当短,只有15-25个字符。我的问题是我要遍历很多字符串,这需要很长时间。我在这样的结构中有很多比较:If(str===str1){dosomething}elseif(str===str2){dosomething}elseif(str===str3){dosomething}字符串没有任何共同的结构或分组。 最佳答案 用a===b比较字符串是比较字符串native的最快方法。但是,如果您可以创建像n

javascript - 在模板中调用 mustache 变量的方法

我有一个mustache模板,我想对mustache变量(在本例中为{{name}})调用一些函数。具体来说,我想对名称变量调用toLowerCase()方法。{{#cat}}{{/cat}}我尝试查看mustache文档,但找不到如何执行此操作。我试过做但我没有得到我期望的结果。我使用此代码呈现模板,该代码在文档准备就绪时触发。$(function(){$.getJSON('/cats.json',function(data){vartemplate=$("#mytemplate").html();varview=Mustache.to_html(template,data);$("

javascript - 当使用angularjs,ngInit加载 View 时初始化范围值的正确方法?

在过去的几周里,我一直在学习angularJs,并一直在研究许多大型应用程序,以了解其在现实世界中的运作方式。在大多数情况下,我注意到加载View时:ng-init="init()"即在相关Controller中调用函数init()。用于设置初始值。但是(很大但是)在阅读ngInit上的Angular文档时,我得出了一个相当严厉的描述:"TheonlyappropriateuseofngInitforaliasingspecialpropertiesofngRepeat,asseeninthedemobelow.Besidesthiscase,youshouldusecontrolle

javascript - AngularJS 指令中的单元测试私有(private)函数

如何对在指令内定义的函数进行单元测试,如下面的myFunc?angular.module('myApp').directive('myDir',[function(){varmyFunc=function(arg){//codeinhere.};return{restrict:'A',scope:{},link:function(scope,element){}};}]);或者您如何定义我不想在指令之外公开的可测试指令特定函数? 最佳答案 最常见的方法是不测试私有(private)方法,而是测试公开其行为的公共(public)接口(

javascript - 预编译的闭包模板 - 闭包编译器中的 "Variable referenced before declaration"警告

java-jarSoyToJsSrcCompiler.jar--shouldGenerateJsdoc--outputPathFormatsimple.js--srcssimple.soySoyToJsSrcCompiler生成一个js文件,如下所示:if(typeoftemplates=='undefined'){vartemplates={};}if(typeoftemplates.simple=='undefined'){templates.simple={};}/***@param{Object.=}opt_data*@param{(null|undefined)=}opt_i

javascript - 如何从 Marionette.js ItemView 模板访问 Backbone.Model 方法?

我正在尝试使用backbone/marionette.js从.eco模板中访问模型的方法。我有一个带有day()方法的Expense模型,它使用moment.js返回“13th”;例如:classExpenseextendsBackbone.Modelday:->moment.get('date').format('Do')我可以按如下方式创建一个新的Expense,并调用day()方法:coffee=newExpense({name:"Coffee",amount:2.50,date:"2014-01-13T13:50:00Z"})coffee.day()#13th但是,尝试从以下V

javascript - 在 ES6 中,第一次调用迭代器的 `next` 方法时参数会发生什么变化?

如果你有一个生成器,比如,function*f(){//Beforestuff.leta=yield1;letb=yield2;return[a,b];}然后运行varg=f();//thisquestionisoverthisvalue.g.next(123);//returns:{value:1,done:false}g.next(456);//returns:{value:2,done:false}g.next();//returns:{value:[456,undefined],done:true}第一次调用.next()设置a为123,第二次调用设置b到456,但是在最后一次

javascript - 向数组中的每个元素添加属性的优雅方式

我如何使用lodash,用最少的代码转换这样的数组:['Alfa','Betta','Gamma','Delta']进入:[{squad:'Alfa'},{squad:'Betta'},{squad:'Gamma'},{squad:'Delta'},] 最佳答案 在Lo-Dash(或下划线)中:_.map(['Alpha','Beta','Gamma','Delta'],function(squad){return{squad:squad};});在ES5中:['Alpha','Beta','Gamma','Delta'].map(

javascript - 一个可以进入任何方法链的函数

我喜欢Ruby的.tap方法的工作方式。它使您可以在不破坏链条的情况下利用任何方法链。我让您操作一个对象然后返回该对象,以便方法链可以正常进行。例如,如果你有foo="foobar".upcase.reverse,你可以这样做:"foo=foobar".upcase.tap{|s|prints}.reverse它将打印大写(但不反转)的字符串,并像原始行一样继续反转和赋值。我想在JS中有一个类似的功能,它只用于一个目的:将对象记录到控制台。我试过这个:Object.prototype.foo=function(){console.log(this);returnthis;};通常,它可